home *** CD-ROM | disk | FTP | other *** search
/ Atari Forever 4 / Atari Forever 4.zip / Atari Forever 4.iso / PD_THEMA / CPX / BOOTCPX / BBUILD.C next >
C/C++ Source or Header  |  1998-03-14  |  3KB  |  140 lines

  1. /**********************************************/
  2. /* File : BBUILD.C                            */
  3. /* ------------------------------------------ */
  4. /* Module : BOOT.CPX             Versie 1.00  */
  5. /* (C) 1990 by MAXON Computer                 */
  6. /* Auteurs : Uwe Hax & Oliver Scholz          */
  7. /* Gebruikte compiler : Turbo-C 2.0           */
  8. /**********************************************/
  9.  
  10.  
  11. /* De gebruikelijke header gegevens --------- */
  12.  
  13. #include <portab.h>
  14. #include <tos.h>
  15. #include <string.h>
  16. #include <stdlib.h>
  17. #include <aes.h>
  18.  
  19.  
  20. struct foobar        /* Wordt normaal in       */
  21. {                    /* "*.rsh" gedefinieerd   */
  22.   WORD dummy;        /* en wordt in            */
  23.   WORD *image;        /* "xcontrol.h" gebruikt  */
  24. };
  25.  
  26. #include    "xcontrol.h"
  27.  
  28.  
  29. /* Definities voor een betere leesbaarheid    */
  30.  
  31. #define    SOURCE        "BOOT.PRG"
  32. #define    DESTINATION    "BOOT.CPX"
  33.  
  34. #define    TRUE    1
  35. #define    FALSE    0
  36.  
  37.  
  38. /* Globale variabelen ----------------------- */
  39.  
  40. /* Header definitie */
  41. CPX_HEADER header;
  42.  
  43. /* Image-gegevens */
  44. LONG data[24]={    0x00000000L, 0x00000000L,
  45.                 0x00000000L, 0x00000000L,
  46.                 0x00000000L, 0x00000000L,
  47.                 0x00000000L, 0x00000000L,
  48.                 0x00000000L, 0x00000000L,
  49.                 0x00001c00L, 0x00003c00L,
  50.                 0x00003c00L, 0xc0007c00L,
  51.                 0xe3ffffffL, 0x7ffffffbL,
  52.                 0xfffffffeL, 0x7ffffffaL,
  53.                 0xe07ffffcL, 0xc0000000L,
  54.                 0x00000000L, 0x00000000L,
  55.                 0x00000000L, 0x00000000L
  56.               };
  57.  
  58. /* Prototypen voor Turbo-C ----------------- */
  59.  
  60. VOID main(VOID);
  61. VOID abort_main(VOID *buffer,WORD fd);
  62.  
  63.  
  64. VOID main(VOID)
  65. {
  66.   VOID *buffer;
  67.   DTA *dta=Fgetdta();
  68.   WORD fd;
  69.   WORD i;
  70.   
  71.   /* Kenmerk voor CPX-files */
  72.   header.magic=100;
  73.   
  74.   /* Bitvector : flags voor laad-modus */
  75.   header.flags.set_only=FALSE;
  76.   header.flags.boot_init=FALSE;
  77.   header.flags.resident=FALSE;
  78.   
  79.   /* Verkorte naam */
  80.   strncpy(header.cpx_id,"BOOT",4);
  81.   
  82.   /* Versienummer */
  83.   header.cpx_version=0x100;
  84.   
  85.   /* Icon-naam */
  86.   strcpy(header.icon_name,"DAS BOOT");
  87.   
  88.   /* Image file */
  89.   for (i=0; i<24; i++)
  90.     header.icon_data[i]=data[i];
  91.     
  92.   /* Icon: kleur 4, geen hoofdletters */
  93.   header.icon_info=0x4000;
  94.   
  95.   /* Programma naam */
  96.   strcpy(header.cpx_name,"Boot-selector");
  97.   
  98.   /* Kleuren */
  99.   header.obj_state=0x1280;
  100.   
  101.   /* Header en programma samenvoegen */
  102.   
  103.   if (Fsfirst(SOURCE,0)<0)
  104.     abort_main(0L,-1);
  105.   
  106.   if ((buffer=Malloc(dta->d_length))<0)
  107.     abort_main(0L,-1);
  108.   
  109.   if ((fd=Fopen(SOURCE,0))<0)
  110.     abort_main(buffer,-1);
  111.     
  112.   if (Fread(fd,dta->d_length,buffer)<0)
  113.     abort_main(buffer,fd);
  114.   Fclose(fd);
  115.   
  116.   if ((fd=Fcreate(DESTINATION,0))<0)
  117.     abort_main(buffer,-1);
  118.   
  119.   if (Fwrite(fd,512L,&header)!=512L)
  120.     abort_main(buffer,fd);
  121.     
  122.   if (Fwrite(fd,dta->d_length,buffer)!=dta->d_length)
  123.     abort_main(buffer,fd);
  124.     
  125.   Mfree(buffer);
  126.   Fclose(fd);
  127.   exit(0);
  128. }
  129.  
  130. VOID abort_main(VOID *buffer,WORD fd)
  131. {
  132.   if (buffer)
  133.     Mfree(buffer);
  134.   if (fd>=0)
  135.     Fclose(fd);
  136.   form_alert(1,"[3][CPX-Datei konnte nicht|\
  137. erzeugt werden!][ Abbruch ]");
  138.     exit(1);
  139. }
  140.